var router = express.Router(); //引入express路由
const express = require('express');
const crypto = require('crypto');
const TOKEN = 'yourtoken'; // 替换为你的 Token


router.all('*', (req, res, next) => {
    // 设置响应头,解决跨域
    res.header('Access-Control-Allow-Origin', '*'); //允许所有域名访问
    res.header('Access-Control-Allow-Headers', '*'); //允许访问的请求头
    res.header('Access-Control-Allow-Methods', '*'); //允许访问的请求方法
    next() //放行 
})


router.get('/', (req, res) => {
    const { signature, timestamp, nonce, echostr } = req.query;

    // 对 Token、timestamp 和 nonce 按字典序排序
    const array = [TOKEN, timestamp, nonce].sort();
    // 拼接成一个字符串，进行 sha1 加密
    const tempStr = array.join('');
    const sha1 = crypto.createHash('sha1');
    const resultCode = sha1.update(tempStr).digest('hex');

    // 对比加密后的字符串和 signature
    if (resultCode === signature) {
        res.send(echostr); // 验证通过，返回 echostr
    } else {
        res.send({ code: 1, success: false, msg: '微信验证失败' }); // 验证失败
    }
});